//用栈来模拟一个队列，要求实现队列的两个基本操作：入栈、出栈

// 用两个栈实现队列

class StackQueue{
    constructor(){
        this.stackA=[];
        this.stackB=[];
    }
    // 入栈操作
    enQueue(element){
        this.stackA.push(element);
    }
    // 出栈操作 
    deQueue(){
        if(this.stackB.length==0){
            if(this.stackA.length == 0){
                return null;
            }
            this.transfer();
        }
        return this.stackB.pop();
    }
    // 栈A元素转移到栈B
    transfer(){
        while(this.stackA.length){
            this.stackB.push(this.stackA.pop());
        }
    }
}


let  stackQueue=new StackQueue();
stackQueue.enQueue(1);
stackQueue.enQueue(2);
stackQueue.enQueue(3);
console.log(stackQueue.deQueue())
console.log(stackQueue.deQueue())
stackQueue.enQueue(4);
console.log(stackQueue.deQueue())
console.log(stackQueue.deQueue())
console.log(stackQueue.deQueue())



